﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Globalization;

namespace CenyLetu
{
    /// <summary>
    /// Importér Excelovského souboru.
    /// </summary>
    class ImportExcel
    {
        /// <summary>
        /// Název souboru.
        /// </summary>
        public string NazevSouboru { get; set; }

        /// <summary>
        /// Konstruktor.
        /// </summary>
        public ImportExcel()
        {
            NazevSouboru = "excel";
        }

        /// <summary>
        /// Načte Excelovský soubor s cenami.
        /// </summary>
        /// <returns>Pole cen letů.</returns>
        public CenaLetu[] NactiSoubor()
        {
            DataTable dataTable = Db.DejInstanci().ProvedCteni("select * from dbo." + NazevSouboru);
            if (dataTable == null)
                return null;

            List<CenaLetu> lety = new List<CenaLetu>();

            DateTimeFormatInfo excelFormat = (DateTimeFormatInfo)CultureInfo.InvariantCulture.DateTimeFormat.Clone();
            excelFormat.DateSeparator = "-";
            excelFormat.ShortDatePattern = "dd-MM-yyyy";

            foreach (DataRow item in dataTable.Rows)
            {
                try
                {
                    CenaLetu let = new CenaLetu();

                    let.Id = int.Parse(item["id"].ToString());
                    let.Date = DateTime.ParseExact(item["datum"].ToString(), "d", excelFormat);
                    let.Cena = decimal.Parse(item["cena"].ToString());

                    if (let.Id < 0)
                        throw new ApplicationException("Neplatné id");

                    if (let.Cena <= 0)
                        throw new ApplicationException("Neplatná cena");

                    if (let.Date < DateTime.Now)
                        throw new ApplicationException("Neplatné datum");

                    lety.Add(let);

                }
                catch (Exception e)
                {
                    Log.DejInstanci().ZapisUdalost(string.Format("Chyba importu Excelu - id {0}, chyba {1}", item["id"], e.Message));
                }
            }

            return lety.ToArray();
        }

    }
}